package com.ljy.my_study.leetcode.最小K个数;

import java.util.Arrays;
import java.util.PriorityQueue;

/**
 * @author lijunying
 * @date 2021/9/3 9:34
 */
public class TestMain {

//    设计一个算法，找出数组中最小的k个数。以任意顺序返回这k个数均可。
//
//    示例：
//
//    输入： arr = [1,3,5,7,2,4,6,8], k = 4
//    输出： [1,2,3,4]
//    提示：
//
//            0 <= len(arr) <= 100000
//            0 <= k <= min(100000, len(arr))
//    通过次数44,654提交次数78,117
//
//    来源：力扣（LeetCode）
//    链接：https://leetcode-cn.com/problems/smallest-k-lcci
//    著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。

    public static void main(String[] args) {
        System.out.println(Arrays.toString(new TestMain().smallestK(new int[]{1,2,3},2)));
    }

    public int[] smallestK(int[] arr, int k) {
        if(k<=0){
            return new int[0];
        }
        PriorityQueue<Integer> queue=new PriorityQueue<>((a, b)->a-b);
        for(int num:arr){
            queue.offer(num);
        }
        int[] result=new int[k];
        int index=0;
        while(index<k){
            result[index++]=queue.poll();
        }
        return result;
    }
}
